// /**
//  * @param {string} str
//  * @return {number}
//  */
// var strToInt = function (str) {
//   str = str.trim(' ')
//   let flag = '+', checkFalg = false, res = 0, startFlag = false, startIndex, length = 0, i = 0, max = 2147483647, min = -2147483648
//   for (; i < str.length; i++) {
//     if (str[i] == '+' || str[i] == '-') {
//       if (!checkFalg && !startFlag) {
//         flag = str[i]
//         checkFalg = true
//       } else {
//         break
//       }
//     } else if (str[i] >= '0' && str[i] <= '9') {
//       if (!startFlag) {
//         startIndex = i
//         startFlag = true
//       } else {
//         length++
//       }
//     } else {
//       break
//     }
//   }

//   if (i == 0) return 0
//   else {
//     res = Number(flag + str.slice(startIndex, startIndex + length + 1))
//     console.log(res)
//     if (Number.isNaN(res)) return 0
//     if (res > max) return max
//     else if (res < min) return min
//     else return res
//   }
// };

/**
 * @param {string} str
 * @return {number}
 */
var strToInt = function (str) {
  str = str.trim(' ')
  let patch = /^(\-|\+)?[0-9]+/
  let res = patch.exec(str)
  if (res) {
    let num = res[0]
    if (num > Math.pow(2, 31) - 1) {
      return Math.pow(2, 31) - 1
    } else if (num < Math.pow(-2, 31)) {
      return Math.pow(-2, 31)
    }
    else return num
  }
  else return 0
};

strToInt('42')